博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
estore商城案例(一)------用户注册&邮件激活(上)
阅读量:4327 次
发布时间:2019-06-06

本文共 4509 字,大约阅读时间需要 15 分钟。

学习javaweb时间不长,也是第一次发博客,有写的不好的地方请大家多多指出.最近,根据老师上课讲的和自己的想法最终是把estore这个网上商城小案例完成了,所以总结一下放到博客上,希望对像我一样的初学者有所帮助.好了,下面开始正题.

涉及到的功能:

1、注册&邮箱激活

2、登录&添加商品&商品列表

3、过滤器:自动登录&权限管理

4、添加购物车&购物车显示

5、生成订单&在线支付

一、注册&邮箱激活

先展示一下效果:

1、注册首页的用户名、邮箱、验证码都做了ajax提交到服务器去验证。

2、提交注册信息,激活邮件.哦哦,下面的页面没显示多少秒,待会再解决.

数据库中看到刚才注册的用户状态为0,还未激活

 

打开Foxmail接收邮件,点击激活,激活后数据库中的状态将变为1,然后跳转到登陆界面登陆.

二、数据库涉及到的表

1、users表:

create database estoresystem;use estoresystem;create user estore identified by 'estore';grant all on estoresystem.* to estore;CREATE TABLE users (  id int(11) NOT NULL AUTO_INCREMENT,  username varchar(100) NOT NULL,  password varchar(100) NOT NULL,  nickname varchar(100) DEFAULT NULL,  email varchar(100) NOT NULL,  state int(11) DEFAULT NULL,  role varchar(10) DEFAULT NULL,  activecode varchar(100) DEFAULT NULL,  registtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (id))

  三、在myeclipse中创建工程,开始撸代码。

1、创建数据库连接,使用c3p0连接池,在utils包装创建JdbcUtils类,负责调用数据库资源。当然使用c3p0需要先在src下创建和配置c3p0的xml文件.

public class JdbcUtils {	private static DataSource dataSource = new ComboPooledDataSource();	public static Connection getConnection()	{		try {			 return dataSource.getConnection();		} catch (SQLException e) {						e.printStackTrace();		}		return null;	}	public static DataSource getDataSource()	{		return dataSource;	}

  

2、在domain包里创建users表的实体类User,以及操作users的dao。dao包下存放interface UserDao,dao.impl包下存放UserDao接口的实现类UserDaoImpl。

接口:

public interface UserDao {	//增删改	public abstract boolean executeUpate(String sql, Object... param);	public abstract boolean add(User u);	public abstract boolean deleteByActivecode(User u);	public abstract boolean updateState(User u);	//单查询	public abstract User queryUser(String key, String values);	public abstract User querUserByActivecode(User u);	public abstract User loginByUser(User u);}

  接口实现类

public class UserDaoImpl implements UserDao {    //增删改通用方法	@Override	public boolean executeUpate(String sql,Object...param)	{		QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource());		int i=0;		try {			i=runner.update(sql, param);		} catch (SQLException e) {						e.printStackTrace();		}		return i>0?true:false;	}	//增	@Override	public boolean add(User u)	{	String sql="insert into users values(null,?,?,?,?,0,'user',?,null)";	Object[] param={u.getUsername(),MD5.getMD5(u.getPassword()),u.getNikename(),u.getEmail(),u.getActivecode()};	return executeUpate(sql, param);//使用的上面的增删改通用方法	}		//单查询通用方法				@Override		public User queryUser(String key,String values)		{			QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource());			String sql="select * from users where "+key+"=?";			try {				return runner.query(sql, new BeanHandler
(User.class), values); } catch (SQLException e) { e.printStackTrace(); throw new MyRuntimeException(e); } } //根据激活码查询用户 @Override public User querUserByActivecode(User u) { return queryUser("activecode", u.getActivecode());//使用的上面的单查询通用方法 } //用户登录时使用 @Override public User loginByUser(User u) { QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource()); String sql="select * from users where username=? and password=?"; try { return runner.query(sql, new BeanHandler
(User.class), u.getUsername(),u.getPassword()); } catch (SQLException e) { e.printStackTrace(); throw new MyRuntimeException(e); } }}

  四、下面开始写web层

1、注册页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>注册首页//这个js文件是ajax
用户注册

用户名
密码
重复密码
昵称
邮箱
验证码 验证码

  

function validate(key,values){	var xmlHttp=ajaxFunction();//这里是获取ajax对象的方法,我没写	xmlHttp.onreadystatechange=function()	{		if(xmlHttp.readyState==4&&xmlHttp.status==200)		{			var b=xmlHttp.responseText;			document.getElementById("hidden").value=b;//对于这里的问题是,我本来是想直接把responseText的值回传给主调函数的,但是始终无法获得,问题的原因还未知,待查证.最后我在form表单中添加了一个hidden标签,把responseText的值传给hidden的value,然后主调函数直接调用hidden的value就可以了		}	}	xmlHttp.open("get","/myestore/regist?"+key+"="+values,false);	xmlHttp.send(null);}

  明天继续......

转载于:https://www.cnblogs.com/cmds/p/3900331.html

你可能感兴趣的文章
【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】...
查看>>
34 帧动画
查看>>
二次剩余及欧拉准则
查看>>
Centos 7 Mysql 最大连接数超了问题解决
查看>>
thymeleaf 自定义标签
查看>>
关于WordCount的作业
查看>>
C6748和音频ADC连接时候的TDM以及I2S格式问题
查看>>
UIView的layoutSubviews,initWithFrame,initWithCoder方法
查看>>
STM32+IAP方案 实现网络升级应用固件
查看>>
用74HC165读8个按键状态
查看>>
jpg转bmp(使用libjpeg)
查看>>
linear-gradient常用实现效果
查看>>
sql语言的一大类 DML 数据的操纵语言
查看>>
VMware黑屏解决方法
查看>>
JS中各种跳转解析
查看>>
JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
查看>>
Ecust OJ
查看>>
P3384 【模板】树链剖分
查看>>
Thrift源码分析(二)-- 协议和编解码
查看>>
考勤系统之计算工作小时数
查看>>